/**
 * Created by admin on 14-7-23.
 */
if(typeof (module) !="undefined"){
    module.exports = TextTableObj;

    var Serializer = require('./Serializer');
    var CompoundPath = require('./../common/CompoundPath');
    var PrintObj = require('./PrintObj');
    var TextTableTd = require('./TextTableTd');
    var TextTableTraveller = require('../common/TextTableTraveller');
}



function TextTableObj(){
    PrintObj.call(this);    // 继承
    this.leftTop = new TextTableTd();



    this.ct = Serializer.prototype.CLASS_TYPE_TEXTTABLEOBJ;
}
TextTableObj.prototype = new PrintObj();
// 转成json字符串

// 从json对象中解析出PointPath
TextTableObj.prototype.fromJson = function(jsonObj,versionId){
    PrintObj.prototype.fromJson.call(this,jsonObj,versionId);

    // 先将tds解析到数组中
    var tmp = new Array();
    var len = jsonObj.tds.length;
    for(var i=0;i<len;i++){
        var textTableTd = new TextTableTd();
        textTableTd.fromJson(jsonObj.tds[i]);
        tmp.push(textTableTd);
    }
    // 更新数组中每个元素的left、right、top、bottom
    for(var i=0;i<len;i++){
        var textTableTd = tmp[i];
        // left
        for(var j=0; j<textTableTd.left.length; j++){
            textTableTd.left[j] = tmp[textTableTd.left[j]];
        }
        for(var j=0; j<textTableTd.right.length; j++){
            textTableTd.right[j] =tmp[textTableTd.right[j]];
        }
        for(var j=0; j<textTableTd.top.length; j++){
            textTableTd.top[j] =tmp[textTableTd.top[j]];
        }
        for(var j=0; j<textTableTd.bottom.length; j++){
            textTableTd.bottom[j] =tmp[textTableTd.bottom[j]];
        }
    }

    // 数组首个对象作为lefttop
        this.leftTop = tmp[0];
}
/**
 * 将对象添加到PDF中
 * @param doc  PDFDocument结构
 * @param info  对象结构，属性如下：
 *                  docOriginX  文档的新原点 在原始原点的 坐标
 *                  docOriginY  文档的新原点 在原始原点的 坐标
 *                  clip        （在GraphObj对象中有效）true表示剪切蒙版，false表示普通对象
 */
TextTableObj.prototype.addToPdf = function(doc,info){
    // 保存上下文环境
    Serializer.prototype.before.call(this, doc, info);

    doc.opacity(this.al);
    var traveller = new TextTableTraveller(this);
    var next = traveller.next();
    while(next){
        // 每个next是一个TextTableTd对象
        next.addToPdf(doc,info);
        next = traveller.next();
    }
    // 还原上下文环境
        Serializer.prototype.after.call(this, doc,info);
}
/**
 * 设置所有文字的轮廓
 * 参数：vectors： TVectorModel类型的数组
 */
TextTableObj.prototype.setTextContour = function(vectors){

}
/**
* 取得模板中所有文字对象,
* 参数：ignoreEmptyDi，true表示需要过滤掉无效di的文字对象
* 返回：数组
*/
//TextTableObj.prototype.getTextObjs = function(ignoreEmptyDi){
//    var ret = new Array();
//    for(var m=0;m<this.sub.length;m++){
//        var o = this.sub[m].getTextObjs(ignoreEmptyDi);
//        for(var n=0;n< o.length;o++){
//            ret.push(o[n]);
//        }
//    }
//    return ret;
//}
